/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package metamodel;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>BGMT Model</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link metamodel.BGMTModel#getTiles <em>Tiles</em>}</li>
 *   <li>{@link metamodel.BGMTModel#getDice <em>Dice</em>}</li>
 *   <li>{@link metamodel.BGMTModel#getPlayers <em>Players</em>}</li>
 *   <li>{@link metamodel.BGMTModel#getRules <em>Rules</em>}</li>
 *   <li>{@link metamodel.BGMTModel#getTileconnectors <em>Tileconnectors</em>}</li>
 * </ul>
 * </p>
 *
 * @see metamodel.MetamodelPackage#getBGMTModel()
 * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='luckyRollMin uniqueImages luckyRollMax onlyOneStart hasGameEnd onlyOneEnd uniquePlayerIds'"
 *        annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot luckyRollMin='dice->forAll(rules->select(oclIsTypeOf(LuckyRoll))->first().oclAsType(LuckyRoll).number >= 1)' uniqueImages='players->isUnique(image)' luckyRollMax='dice->forAll(rules->select(oclIsTypeOf(LuckyRoll))->first().oclAsType(LuckyRoll).number <= sides)' onlyOneStart='Start.oclAsSet()->size() = 1' hasGameEnd='rules->select(oclIsTypeOf(GameEnd))->size() >= 1' onlyOneEnd='tiles->select(oclIsTypeOf(End))->size() = 1' uniquePlayerIds='players->isUnique(identifier)'"
 * @generated
 */
public interface BGMTModel extends EObject {
	/**
	 * Returns the value of the '<em><b>Tiles</b></em>' containment reference list.
	 * The list contents are of type {@link metamodel.Tile}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Tiles</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Tiles</em>' containment reference list.
	 * @see metamodel.MetamodelPackage#getBGMTModel_Tiles()
	 * @model containment="true" required="true"
	 * @generated
	 */
	EList<Tile> getTiles();

	/**
	 * Returns the value of the '<em><b>Dice</b></em>' containment reference list.
	 * The list contents are of type {@link metamodel.Dice}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Dice</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Dice</em>' containment reference list.
	 * @see metamodel.MetamodelPackage#getBGMTModel_Dice()
	 * @model containment="true" required="true"
	 * @generated
	 */
	EList<Dice> getDice();

	/**
	 * Returns the value of the '<em><b>Players</b></em>' containment reference list.
	 * The list contents are of type {@link metamodel.Player}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Players</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Players</em>' containment reference list.
	 * @see metamodel.MetamodelPackage#getBGMTModel_Players()
	 * @model containment="true" required="true"
	 * @generated
	 */
	EList<Player> getPlayers();

	/**
	 * Returns the value of the '<em><b>Rules</b></em>' containment reference list.
	 * The list contents are of type {@link metamodel.BoardRule}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Rules</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Rules</em>' containment reference list.
	 * @see metamodel.MetamodelPackage#getBGMTModel_Rules()
	 * @model containment="true"
	 * @generated
	 */
	EList<BoardRule> getRules();

	/**
	 * Returns the value of the '<em><b>Tileconnectors</b></em>' containment reference list.
	 * The list contents are of type {@link metamodel.TileConnector}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Tileconnectors</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Tileconnectors</em>' containment reference list.
	 * @see metamodel.MetamodelPackage#getBGMTModel_Tileconnectors()
	 * @model containment="true" required="true"
	 * @generated
	 */
	EList<TileConnector> getTileconnectors();

} // BGMTModel
